home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Creative Review 28
/
Creative-Review-CD-ROM-28.iso
/
pc
/
kungfu
/
assets
/
game.dir
/
00014_Script_baddy manager class
< prev
next >
Wrap
Text File
|
1997-08-08
|
6KB
|
255 lines
-- baddy class method
-- --------------------------------------------------
property state
property makinggap
property startgap
property list
property props
property animlist
property max
property total
property madecount
property killcount
property datalist
property toggle
property channels
property freechannels
-- --------------------------------------------------
global gfloor
global gcell
global ggame
global gplayer
-- ==================================================
-- new method
-- --------------------------------------------------
on new me, props
minit me, props
return me
end mnew
-- ==================================================
-- minit method
-- --------------------------------------------------
on minit me
-- put "in minit baddy manager"
put data2list ( "baddy anim data" ) into animlist
set props = [:]
setaprop ( props, #type , #baddy )
set list = []
set max = 3
set numochannels = 10
set lochannel = 8
set channels = []
repeat with channel = ( lochannel ) to ( lochannel + numochannels - 1)
add channels, channel
end repeat
repeat with channel in channels
puppetsprite channel, true
set the castnum of sprite channel = false
end repeat
set freechannels = duplicate ( channels )
set toggle = 0
-- put "out minit baddy manager"
end minit
-- ==================================================
-- mstart method
-- --------------------------------------------------
on mstart me, screenlist
-- put "in mstart baddy manager"
set max = checkaprop ( screenlist , #max, 1 )
set total = checkaprop ( screenlist, #total, 1 )
set datalist = checkaprop ( screenlist, #data, 1 )
set health = checkaprop ( screenlist, #health, 1 )
setaprop props, #health, health
set killcount = 0
set madecount = 0
repeat with loadname in datalist
mload gload, loadname
end repeat
set makinggap = 60
set startgap = 2 * 60
set walkongap = 3 * 60
set state = #making
maddtask gtime, me, the timer + walkongap
set toggle = random ( 2 ) - 1
-- put "out mstart baddy manager"
end mstart me
-- ==================================================
-- mstartmaking method
-- --------------------------------------------------
on mstartmaking me
-- put "in mstartmaking baddy manager"
set state = #making
maddtask gtime, me, the timer + startgap
set toggle = random ( 2 ) - 1
-- put "out mstartmaking baddy manager"
end mstartmaking
-- ==================================================
-- mstopmaking method
-- --------------------------------------------------
on mstopmaking me
-- put "in mstopmaking baddy manager"
set state = #waiting
mdeletetasks gtime, me
-- put "out mstopmaking baddy manager"
end mstopmaking
-- ==================================================
-- mdotask method
-- --------------------------------------------------
on mdotask me
-- put "in mdotask baddy manager"
if ( count ( list ) = max ) or ( madecount = total ) then
mstopmaking me
return false
end if
mmake me
return makinggap
-- put "out mdotask baddy manager"
end mdotask me
-- ==================================================
-- mmake method
-- --------------------------------------------------
on mmake me
-- put "in mmake baddy manager"
set data = getat ( datalist, random ( count ( datalist ) ) )
setaprop props, #data, data
set animdata = getaprop ( animlist, data )
setaprop props, #animdata, animdata
set toggle = not ( toggle )
if toggle then set direction = #right
else set direction = #left
case direction of
#right: set cell = - 2
#left: set cell = 31
end case
set offset = mgetstartoffset ( gcell , direction, data )
set theloch = ( mcell2screen ( gcell, cell ) )
set loc = point ( theloch , mgetfloor ( gcell ) ) + offset
set thechannel = getat ( freechannels, 1 )
deleteat ( freechannels, 1 )
setaprop ( props, #loc, loc )
setaprop ( props, #cell, cell )
setaprop ( props, #direction, direction )
setaprop ( props, #drawdata , [ #channel: thechannel ] )
set baddy = new ( script "baddy class" , props )
add list, baddy
mstart baddy
set madecount = madecount + 1
-- put "out mmake baddy manager"
end mmake
-- ==================================================
-- mreturnthedead method
-- --------------------------------------------------
on mreturnthedead me, thedead
-- put "in mreturnthedead baddy manager"
add freechannels, the channel of thedead
deleteone list , thedead
set killcount = killcount + 1
if killcount = total then
mvictory gplayer
repeat with loadname in datalist
munload gload, loadname
end repeat
return
end if
if state = #waiting then
mstartmaking me
end if
-- put "out mreturnthedead baddy manager"
end mreturnthedead
-- ==================================================
-- mhide method
-- --------------------------------------------------
on mhide me
-- put "in mhide baddy manager"
repeat with baddy in list
mhide baddy
mdraw baddy
end repeat
-- put "out mhide baddy manager"
end mhide